import wx from 'weixin-js-sdk'
import Vue from 'vue'
import { Posting, Geting } from './axios'

export function curEnv() {
  // 判断当前环境
  return new Promise((resolve, reject) => {
    console.log('有判断环境', wx)
    wx.miniProgram.getEnv(
      (res) => {
        console.log('环境--', res)
        if (res.miniprogram || res.miniProgram) {
          // 小程序打开
        } else {
        }
        resolve(res)
      },
      (err) => {
        console.log('环境失败--', err)
      }
    )
  })
}

export async function weixinConfig() {
  const params = {
    url: location.href,
    tenantId: localStorage.tenantId,
    projectId: localStorage.projectId
  }
  const res = await Geting(Vue.api.rent.getWXConfig, params)
  Vue.toast(res)
  if (!res.isSuccess) {
    console.log('getWXConfig请求失败')
    return
  }

  let data = res.data
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
    appId: data.appId, // 必填，企业号的唯一标识，此处填写企业号corpid
    timestamp: data.timestamp, // 必填，生成签名的时间戳
    nonceStr: data.nonceStr, // 必填，生成签名的随机串
    signature: data.signature, // 必填，签名，见附录1
    jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] // 必填，需要使用的JS接口列表
  })
  wx.ready(() => {
    console.log('wx 成功')
  })
  wx.error(async (res) => {
    console.log('err2', res)
  })
}
export function weixinReady() {
  return new Promise((resolve, reject) => {
    wx.ready(function () {
      //需在用户可能点击分享按钮前就先调用
      resolve(true)
    })
  })
}
export function shareFn({ title, desc, link, imgUrl }) {
  // 分享朋友
  wx.updateAppMessageShareData({
    title, // 分享标题
    desc, // 分享描述
    link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl, // 分享图标
    success: function () {
      // 设置成功
    },
    fail: function (res) {
      Vue.toast(res)
      // 设置失败
    }
  })
  // 分享朋友圈
  wx.updateTimelineShareData({
    title, // 分享标题
    link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl, // 分享图标
    success: function () {
      // 设置成功
    }
  })
  // wx.miniProgram.postMessage({ data: { title, desc, link, imgUrl } })
}
export function checkApi() {
  wx.checkJsApi({
    jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
    success: function (res) {
      // 以键值对的形式返回，可用的api值true，不可用为false
      // 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
      console.log('检测可用接口', res)
    }
  })
}
export function sendMessage({ title, desc, link, imageUrl }) {
  console.log('有触发h5发送消息给小程序')
  wx.miniProgram.postMessage({ data: { title, desc, path: link, imageUrl } })
}
export function isWeixin() {
  var ua = navigator.userAgent.toLowerCase()
  console.log('浏览器---', ua)
  if (ua.match(/MicroMessenger/i) == 'micromessenger') {
    // 在微信浏览器中打开
    return true
  }
  return false
}

export function toMiniLogin(options) {
  const { path, query } = options
  const arr = Object.keys(query).map((key) => {
    return `${key}=${query[key]}`
  })

  let redirectUrl = path
  if (arr.length > 0) {
    redirectUrl = `${location.origin}${location.pathname}#${redirectUrl}?${arr.join('&')}`
  }
  wx.miniProgram.navigateTo({ url: '/pages/login/index?webviewRedirect=' + encodeURIComponent(redirectUrl) })
}

export function redirectToMiniLogin(options) {
    const { path, query } = options
    const arr = Object.keys(query).map((key) => {
      return `${key}=${query[key]}`
    })

    let redirectUrl = path
    if (arr.length > 0) {
      redirectUrl = `${location.origin}${location.pathname}#${redirectUrl}?${arr.join('&')}`
    }
    wx.miniProgram.redirectTo({ url: '/pages/login/index?webviewRedirect=' + encodeURIComponent(redirectUrl) })
}
// 校验token是否有效
export async function checkToken() {
  if (!localStorage.token) {
    return false
  }
  const res = await Posting('/usermanager/h5/houseDemandInfo/checkMiniToken')
  if (!res.isSuccess) {
    return false
  }
  return res.data
}

export async function getTicket() {
  const params = {
    url: location.href,
    tenantId: localStorage.tenantId,
    projectId: localStorage.projectId
  }
  const res = await Geting(Vue.api.rent.getWXConfig, params)
  if (!res.isSuccess) {
    console.log('getWXConfig请求失败')
    return
  }

  let data = res.data
  wx.config({
    debug: false, // 开启调试模式,
    appId: data.appId, // 必填，企业号的唯一标识，此处填写企业号corpid
    timestamp: data.timestamp, // 必填，生成签名的时间戳
    nonceStr: data.nonceStr, // 必填，生成签名的随机串
    signature: data.signature, // 必填，签名，见附录1
    jsApiList: ['getLocation', 'openLocation'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
  })
  wx.ready(() => {
    console.log('wx 成功')
  })
  wx.error(async (res) => {
    console.log('err2', res)
  })
}

/**
 *
 * @param {*} id 房子是sourceId,楼盘是communityId
 * @param {*} isHouse '0'为楼盘，'1' 为房子
 * @param {*} sourcesType 0-二手房,1-出租房
 * @param {*} nearByAddress 周边，只有在房子下面所在楼盘的时候需要传
 */
export async function onlineConsult(id, isHouse, sourcesType, nearByAddress, otherParams) {
  let url = '/pages/consult/index?id=' + id + '&isHouse=' + (isHouse || '0')
  if (sourcesType) {
    url += '&sourcesType=' + sourcesType
  }
  if (nearByAddress) {
    url += '&nearByAddress=' + nearByAddress
  }
  if (otherParams) {
    Object.keys(otherParams).forEach((key) => {
      url += `&${key}=` + otherParams[key]
    })
  }
  wx.miniProgram.navigateTo({ url })
}

export async function toWebViewPage(url) {
  let pdfurl = '/pages/webViewPage/index?url=' + encodeURIComponent(url)
  wx.miniProgram.navigateTo({ url: pdfurl })
}
// 去分享的页面
export async function toSharePage(url) {
  let pdfurl = '/pages/emptyPage/shareFee?type=' + 'contract' + '&contractUrl=' + url
  wx.miniProgram.navigateTo({ url: pdfurl })
}
